#pragma once

#include <gexpl_gpio_ctl.h>
#include <gofcl_gpio_ctl1.h>

// 8到15号引脚的各种配置
typedef struct {
	gpio_pin_ctl_e pin8_ctl : 4;
	gpio_pin_ctl_e pin9_ctl : 4;
	gpio_pin_ctl_e pin10_ctl : 4;
	gpio_pin_ctl_e pin11_ctl : 4;
	gpio_pin_ctl_e pin12_ctl : 4;
	gpio_pin_ctl_e pin13_ctl : 4;
	gpio_pin_ctl_e pin14_ctl : 4;
	gpio_pin_ctl_e pin15_ctl : 4;
} gpio_ctl_8_15_s;

_Static_assert(sizeof(gpio_ctl_8_15_s) == 4,
	       "Struct gpio_ctl_8_15_s defined error!");

// 配置给定GPIO的8到15号引脚的配置。
static inline void gpio_setup_pin_8_15(gpio_qe gpio_q, gpio_ctl_8_15_s ctl1) {
	union {
		gpio_ctl1_s c;
		gpio_ctl_8_15_s d;
	} cd = {
		.d = ctl1,
	};
	gpio_wreg_ctl1_s(gpio_q, cd.c);
}
